package top.heathylife.gateway.common.po;

import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONUtil;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.experimental.Accessors;
import lombok.extern.slf4j.Slf4j;
import top.healthylife.basics.utils.utils.SystemThreadLocal;
import top.heathylife.gateway.common.cons.SystemCons;

import java.util.Map;

/**
 * @author : GaoZeXi
 * @date 2021/11/29 15:38
 */
@Data
@Accessors(chain = true)
@ApiModel("记录请求信息")
@Slf4j
public class RecordRequestInfo {
    /**
     * 请求地址
     */
    String url;
    /**
     * 请求体
     */
    String body;
    /**
     * 请求头
     */
    Map<String, String> header;
    /**
     * 请求类型
     */
    String type = "post";

    @Override
    public String toString() {
        return JSONUtil.toJsonStr(this);
    }


    /**
     * 记录请求信息
     *
     * @param url    地址
     * @param body   请求体
     * @param header 头
     * @param type   类型
     */
    public static void recordRequest(String url, String body, Map<String, String> header, String type) {
        log.info("记录请求信息到线程变量");
        try {
            RecordRequestInfo recordRequestInfo = new RecordRequestInfo();
            if (ObjectUtil.isNotEmpty(url)) {
                recordRequestInfo.setUrl(url);
            }
            if (ObjectUtil.isNotEmpty(body)) {
                recordRequestInfo.setBody(body);
            }
            if (ObjectUtil.isNotEmpty(header)) {
                recordRequestInfo.setHeader(header);
            }
            if (ObjectUtil.isNotEmpty(type)) {
                recordRequestInfo.setType(type);
            }
            SystemThreadLocal.set(SystemCons.REQ_ORIGIN_DATA, recordRequestInfo.toString());
            log.info("请求信息:{}", recordRequestInfo.toString());
        } catch (Exception e) {
            //ignore
            log.info("记录请求信息出错");
        }
    }
}
